<?php

namespace Model;

class MovieHandler{
	
	private $m_db = NULL;
        
    public function __construct(Database $db) {
            $this->m_db =$db;
    }
	
	//Hämta alla filmer för en användare
	public function getAllMovies($userId) {
	 		
	 	$sql = "SELECT * FROM movie WHERE m_userId = $userId";
        $stmt = $this->m_db->Select($sql);
                
        if ($stmt->bind_result($id, $name, $review, $rating, $userId, $username, $image) == FALSE) {
                throw new \Exception($this->mysqli->error);
        }

        $ret = new MovieArray();
        
        while ($stmt->fetch()) {
                $movie = new Movie($id, $name, $review, $rating, $userId, $username, $image);
                $ret->add($movie);
		}
                
        $stmt->close();
                
        return $ret;
    }
	
	//Hämta ut en vald film
	public function getMovie($movieId) {
			
		$sql = "SELECT * FROM movie WHERE m_id = ?";
        
        $stmt = $this->m_db->Prepare($sql);
                
        $stmt->bind_param("i", $movieId);
                
        $stmt->execute();
                
		if ($stmt->bind_result($movieid, $name, $review, $rating, $userId, $username, $image) == FALSE) {
                throw new \Exception($this->mysqli->error);
        }
                
        if ($stmt->fetch()) {
        	$ret = new Movie($movieId, $name, $review, $rating, $userId, $username, $image);
		} else {
			throw new \Exception("Det finns ingen film med id $memberId");
		}
		
		$stmt->close();
		return $ret;
	}
	//Redigerar en film
	public function EditMovie($name, $review, $rating, $id){
		
		$sql = "UPDATE movie SET m_title= ?, m_review= ?, m_rating= ? 
				WHERE m_id= '$id'";
		
		$stmt = $this->m_db->Prepare($sql);
		
		$stmt->bind_param("ssi", $name, $review, $rating);
		
        $stmt->execute();
		
		return true; 
	}
	
	
	
	public static function Test(Database $db){
		
		$sut = new MovieHandler($db);	
		//Test av GetAllMovies
		$movieArray= $sut->getAllMovies(47);
		
		if (get_class($movieArray) != "Model\MovieArray") {
             echo "getAllMovies returnerar " . get_class($movieArray);
             return false;
        }
                      
        foreach ($movieArray->get() as $movie) {
                
            $actual = $sut->getMovie($movie->getMovieId(), $db);
            
            if ($actual->getName() != $movie->getName()) {
            	echo "MovieArray->getMovie skiljer sig i returvärde från GetMovieFeed";
                return false;
            }
            
            if ($actual->getReview() != $movie->getReview()) {
                 echo "MovieArray->getMovie skiljer sig i returvärde från GetMovieFeed";
                 return false;
            }
            
            if ($actual->getRating() != $movie->getRating()) {
                 echo "MovieArray->getMovie skiljer sig i returvärde från GetMovieFeed";   
                 return false;
            }
			
			if ($actual->getUserId() != $movie->getUserId()) {
                 echo "MovieArray->getMovie skiljer sig i returvärde från GetMovieFeed";   
                 return false;
            }
			if ($actual->getUsername() != $movie->getUsername()) {
                 echo "MovieArray->getMovie skiljer sig i returvärde från GetMovieFeed";   
                 return false;
            }
                
        }
                
        return true; 
			
		
	}
	
}
